package com.csii.mobilebanking.user;

import java.io.FileFilter;

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class TextChangeListenerUtil implements TextWatcher {

	int mLimitLen;
	InputFilterUtil mFilter;
	EditText mEditText;
	private CharSequence tempAll;
	private int editStart;
	private int editEnd;

	public TextChangeListenerUtil(int mLimitLen, InputFilterUtil mFilter,
			EditText text) {
		this.mLimitLen = mLimitLen;
		this.mFilter = mFilter;
		this.mEditText = text;
	}

	@Override
	public void onTextChanged(CharSequence s, int start, int before, int count) {
	}

	@Override
	public void beforeTextChanged(CharSequence s, int start, int count,
			int after) {
		tempAll = s;// 这次之前输入的所有字符
	}

	@Override
	public void afterTextChanged(Editable s) {
		// 返回选定文本的起始位置。如果是空文档，则返回 0；如果没有选定，则返回点值 返回：起始位置，该值 >= 0
		editStart = mEditText.getSelectionStart();
		// 返回选定文本的结束位置。如果文本为空，则返回 0；如果没有选择，则返回点值。 返回：结束位置，该值 >= 0
		editEnd = mEditText.getSelectionEnd();
		if (s.length() > 0) {
			int pos = s.length() - 1;
			CharSequence sc = String.valueOf(s.charAt(pos));
			if (mFilter.chkLen(tempAll.length(), mLimitLen)) {
				s.delete(editStart - 1, editEnd);// 删除非法字符
				mEditText.setText(s);
				if (s.length() > 1) {
					mEditText.setSelection(s.length());// 设置光标的位置从1开始
				}
			}
		}
		if (tempAll.length() > mLimitLen) {
			s.delete(editStart - 1, editEnd);
			mEditText.setText(s);
			mEditText.setSelection(s.length());
		}
	}

}
